/*给你一个下标从 0 开始、由正整数组成的数组 nums 。

你可以在数组上执行下述操作 任意 次：

    选中一个同时满足 0 <= i < nums.length - 1 和 nums[i] <= nums[i + 1] 的整数 i 。将元素 nums[i + 1] 替换为 nums[i] + nums[i + 1] ，并从数组中删除元素 nums[i] 。

返回你可以从最终数组中获得的 最大 元素的值。

 * 替换实际是对相邻非递减两项求和；最终数组元素的值是原始数组某个子数组的和，并且子数组之间没有空隙。
 * 为了尽可能构成非递减，先合并靠后的元素，使其和尽可能大于前面的元素。如果合并后的值没有前一个大，那么就从前一个值开始继续算。
 */

class Solution {
    public long maxArrayValue(int[] nums) {
        long res = nums[nums.length-1];
        for (int i = nums.length-1; i>0; i--) {
            if (res >= nums[i-1]) {
                res += nums[i-1];
            } else {
                res = nums[i-1];
            }
        }
        return res;
    }
}